package leetcode;

import javafx.collections.transformation.SortedList;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

public class Test1122 {
    public int[] relativeSortArray(int[] arr1, int[] arr2) {
//        HashMap<Integer,Integer> dic=new HashMap<Integer,Integer>();
//        List<Integer> sortedList=new ArrayList<Integer>();
//        for(int i=0;i<arr2.length;i++){
//            dic.put(arr2[i],0);
//        }
//        for(int i=0;i<arr1.length;i++){
//            if(dic.containsKey(arr1[i])){
//                dic.put(arr1[i],dic.get(arr1[i])+1);
//            }
//            else{
//                sortedList.add(arr1[i]);
//            }
//        }
//        int index=0;
//        for(int i=0;i<arr2.length;i++){
//            int count=dic.get(arr2[i]);
//            for(int j=1;j<=count;j++){
//                arr1[index++]=arr2[i];
//            }
//        }
//        int[] sortedArr= sortedList.stream().mapToInt(Integer::valueOf).toArray();
//        Arrays.sort(sortedArr);
//        for(int a:sortedArr){
//            arr1[index++]=a;
//        }
//
//        return arr1;

            int[] bucket=new int[1001];
            int[] res=new int[arr1.length];
            for(int a:arr1){
                bucket[a]++;
            }
            int index=0;
            for(int a:arr2){
                while(bucket[a]-- >0){
                    res[index++]=a;
                }
            }
            for(int i=1;i<bucket.length;i++){
                while(bucket[i]-- >0){
                    res[index++]=i;
                }
            }
            return res;
        }
}
